package com.sy.mall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * 一、整合Mybatis-Plus
 *  （1）导入依赖
 *      <dependency>
 *             <groupId>com.baomidou</groupId>
 *             <artifactId>mybatis-plus-boot-starter</artifactId>
 *             <version>3.2.0</version>
 *      </dependency>
 *  （2）配置
 *    1、配置数据源
 *          （1）、导入数据库驱动
 *          （2）、在application.yml中配置数据源相关信息
 *    2、配置Mybatis-Plus
 *          （1）、使用@MapperScan注解扫描
 *          （2）、告诉Mybatis-Plus，sql映射文件的位置
 *
 * 二、逻辑删除
 *  （1）配置全局逻辑删除规则（可省略）
 *  （2）配置逻辑删除组件（可省略）
 *  （3）给Bean上添加逻辑删除注解
 * 三、JSR303
 *  （1）给Bean添加上注解：javax.validation.constraints 添加自定义的message
 *  （2）开启校验功能@Valid
 *      效果：校验错误以后会有默认的响应
 *  （3）给校验的bean后面跟着一个BindingResult，从而获取校验的结果
 *  （4）分组校验（未被标分组的注解校验就不会被校验）
 *      1、给校验注解标注分组group的分类接口
 *      2、public R save(@Validated({AddGroup.class}) @RequestBody BrandEntity brand)
 *      3、默认没有指定分组的校验注解，在分组校验的情况下不生效
 *
 * 四、统一的异常处理
 * @ControllerAdvice
 *
 * 五、自定义校验
 *      1、编写自定义的校验注解
 *      2、编写自定义的校验器
 *      3、关联自定义的校验器和校验注解
 *
 * 平台属性：
 *      规格参数
 *      规格修改
 *      销售属性维护
 *      查询属性和删除关联
 *      新增分组与属性关联
 * 发布商品：
 *      获取商品关联品牌
 *      获取分类下所有分组与属性
 */



@EnableFeignClients(basePackages = "com.sy.mall.product.feign")
@EnableDiscoveryClient
@MapperScan("com.sy.mall.product.dao")
@SpringBootApplication
public class ProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProductApplication.class, args);
    }

}
